/**
 * 代码生成配置
 */
export default {
  // 作者
  author: 'ruoyi',
  
  // 默认生成包路径
  packageName: 'com.ruoyi.system',
  
  // 自动去除表前缀
  autoRemovePre: false,
  
  // 表前缀（生成类名不会包含表前缀，多个用逗号分隔）
  tablePrefix: 'sys_',

  // 模板路径
  templatePath: 'src/templates',

  // 是否允许覆盖本地文件
  allowOverwrite: false,

  // 默认上级菜单ID
  defaultParentMenuId: 3,

  // 基础Entity类型
  baseEntity: {
    crud: 'BaseEntity',
    tree: 'TreeEntity'
  },

  // 数据库字段类型与TS/Java类型映射
  typeMap: {
    // 数据库字段类型到Java类型的映射
    javaTypeMap: {
      'varchar': 'String',
      'char': 'String',
      'text': 'String',
      'nvarchar': 'String',
      'blob': 'byte[]', 
      'integer': 'Integer',
      'tinyint': 'Integer',
      'smallint': 'Integer',
      'mediumint': 'Integer',
      'int': 'Integer',
      'number': 'Long',
      'bigint': 'Long',
      'float': 'Double',
      'double': 'Double',
      'decimal': 'BigDecimal',
      'bit': 'Boolean',
      'bool': 'Boolean',
      'date': 'Date',
      'datetime': 'Date',
      'timestamp': 'Date'
    },

    // 数据库字段类型到TypeScript类型的映射
    tsTypeMap: {
      'varchar': 'string',
      'char': 'string',
      'text': 'string',
      'nvarchar': 'string',
      'blob': 'Buffer',
      'integer': 'number',
      'tinyint': 'number',
      'smallint': 'number',
      'mediumint': 'number',
      'int': 'number',
      'number': 'number',
      'bigint': 'number',
      'float': 'number',
      'double': 'number',
      'decimal': 'number',
      'bit': 'boolean',
      'bool': 'boolean',
      'date': 'Date',
      'datetime': 'Date',
      'timestamp': 'Date'
    },

    // 数据库字段类型到Sequelize类型的映射
    sequelizeTypeMap: {
      'varchar': 'STRING',
      'char': 'STRING',
      'text': 'TEXT',
      'nvarchar': 'STRING',
      'blob': 'BLOB',
      'integer': 'INTEGER',
      'tinyint': 'INTEGER',
      'smallint': 'INTEGER',
      'mediumint': 'INTEGER',
      'int': 'INTEGER',
      'number': 'BIGINT',
      'bigint': 'BIGINT',
      'float': 'FLOAT',
      'double': 'DOUBLE',
      'decimal': 'DECIMAL',
      'bit': 'BOOLEAN',
      'bool': 'BOOLEAN',
      'date': 'DATE',
      'datetime': 'DATE',
      'timestamp': 'DATE'
    }
  },

  // 超类字段，生成domain类时会自动跳过
  superClassFields: [
    'createBy',
    'createTime',
    'updateBy',
    'updateTime',
    'remark',
    'parentName',
    'parentId',
    'orderNum',
    'ancestors',
    'children'
  ]
}; 